<?php

namespace Fize\Third\WechatWork;

/**
 * 企业微信接口
 */
class Qyapi extends QyapiAbstract
{

    /**
     * @var bool 是否初始化时马上检测AccessToken
     */
    protected $checkAccessToken = false;


    /**
     * 检测是否在企业微信内置浏览器中打开
     * @return bool
     */
    public static function isInWxWork(): bool
    {
        $ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
        // 1. 验证User-Agent有效性
        if (empty($ua)) return false;
        // 2. 检测企业微信标识 'wxwork'
        $hasWxwork = stripos($ua, 'wxwork') !== false;
        // 3. 排除普通微信：存在 'MicroMessenger' 但不存在 'wxwork'
        $hasWechat = stripos($ua, 'MicroMessenger') !== false;
        // 4. 仅当存在wxwork且不存在MicroMessenger时为企业微信
        return $hasWxwork && !$hasWechat;
    }

    /**
     * 获取企业微信接口IP段
     * @return array 企业微信服务器IP段
     * @see https://developer.work.weixin.qq.com/document/path/92520
     */
    public function getApiDomainIp(): array
    {
        $this->getAccessToken();
        $result = $this->httpGet("/get_api_domain_ip?access_token={$this->accessToken}");
        return $result['ip_list'];
    }

    /**
     * 获取企业微信回调IP段
     * @return array 企业微信服务器IP段
     * @see https://developer.work.weixin.qq.com/document/path/92521
     */
    public function getcallbackip(): array
    {
        $this->getAccessToken();
        $result = $this->httpGet("/getcallbackip?access_token={$this->accessToken}");
        return $result['ip_list'];
    }

    /**
     * 获取企业 jsapi_ticket
     * @return array
     */
    public function getJsapiTicket(): array
    {
        return $this->httpGet("/get_jsapi_ticket?access_token={$this->accessToken}");
    }
}
